/**
 * API接口定义
 */
import { get, post, put, del, upload } from '@/utils/request'

/**
 * 用户相关接口
 */
export const userApi = {
  // 登录
  login(data) {
    return post('/auth/login', data)
  },
  
  // 注册
  register(data) {
    return post('/auth/register', data)
  },
  
  // 发送短信验证码
  sendSms(data) {
    return post('/auth/sms', data)
  },
  
  // 验证短信验证码
  verifySms(data) {
    return post('/auth/verify-sms', data)
  },
  
  // 忘记密码
  forgotPassword(data) {
    return post('/auth/forgot-password', data)
  },
  
  // 重置密码
  resetPassword(data) {
    return post('/auth/reset-password', data)
  },
  
  // 退出登录
  logout() {
    return post('/auth/logout')
  },
  
  // 刷新token
  refreshToken(data) {
    return post('/auth/refresh', data)
  },
  
  // 获取用户信息
  getUserInfo() {
    return get('/user/profile')
  },
  
  // 更新用户信息
  updateUserInfo(data) {
    return put('/user/profile', data)
  },
  
  // 修改密码
  changePassword(data) {
    return put('/user/password', data)
  },
  
  // 绑定手机号
  bindPhone(data) {
    return post('/user/bind-phone', data)
  },
  
  // 绑定邮箱
  bindEmail(data) {
    return post('/user/bind-email', data)
  },
  
  // 上传头像
  uploadAvatar(file) {
    const formData = new FormData()
    formData.append('avatar', file)
    return upload('/user/avatar', formData)
  },
  
  // 获取学习统计
  getStudyStats() {
    return get('/user/study-stats')
  },
  
  // 获取学习记录
  getStudyRecords(params) {
    return get('/user/study-records', params)
  },
  
  // 获取收藏列表
  getFavorites(params) {
    return get('/user/favorites', params)
  },
  
  // 添加收藏
  addFavorite(data) {
    return post('/user/favorites', data)
  },
  
  // 取消收藏
  removeFavorite(id) {
    return del(`/user/favorites/${id}`)
  }
}

/**
 * 课程相关接口
 */
export const courseApi = {
  // 获取课程列表
  getCourses(params) {
    return get('/courses', params)
  },
  
  // 获取课程详情
  getCourseDetail(id) {
    return get(`/courses/${id}`)
  },
  
  // 获取课程章节
  getCourseChapters(id) {
    return get(`/courses/${id}/chapters`)
  },
  
  // 获取课程评价
  getCourseReviews(id, params) {
    return get(`/courses/${id}/reviews`, params)
  },
  
  // 添加课程评价
  addCourseReview(id, data) {
    return post(`/courses/${id}/reviews`, data)
  },
  
  // 购买课程
  buyCourse(data) {
    return post('/courses/buy', data)
  },
  
  // 获取我的课程
  getMyCourses(params) {
    return get('/courses/my', params)
  },
  
  // 开始学习
  startStudy(courseId, chapterId) {
    return post('/courses/study', { courseId, chapterId })
  },
  
  // 完成学习
  completeStudy(courseId, chapterId, data) {
    return post('/courses/complete', { courseId, chapterId, ...data })
  },
  
  // 获取学习进度
  getStudyProgress(courseId) {
    return get(`/courses/${courseId}/progress`)
  },
  
  // 获取课程分类
  getCourseCategories() {
    return get('/courses/categories')
  },
  
  // 搜索课程
  searchCourses(params) {
    return get('/courses/search', params)
  },
  
  // 获取推荐课程
  getRecommendedCourses(params) {
    return get('/courses/recommended', params)
  },
  
  // 获取热门课程
  getPopularCourses(params) {
    return get('/courses/popular', params)
  }
}

/**
 * 考试相关接口
 */
export const examApi = {
  // 获取考试列表
  getExams(params) {
    return get('/exams', params)
  },
  
  // 获取考试详情
  getExamDetail(id) {
    return get(`/exams/${id}`)
  },
  
  // 获取考试题目
  getExamQuestions(id) {
    return get(`/exams/${id}/questions`)
  },
  
  // 开始考试
  startExam(id) {
    return post(`/exams/${id}/start`)
  },
  
  // 提交答案
  submitAnswer(examId, questionId, data) {
    return post(`/exams/${examId}/questions/${questionId}/answer`, data)
  },
  
  // 提交考试
  submitExam(id, data) {
    return post(`/exams/${id}/submit`, data)
  },
  
  // 获取考试结果
  getExamResult(id) {
    return get(`/exams/${id}/result`)
  },
  
  // 获取我的考试记录
  getMyExamRecords(params) {
    return get('/exams/my-records', params)
  },
  
  // 获取考试统计
  getExamStats() {
    return get('/exams/stats')
  },
  
  // 获取错题本
  getWrongQuestions(params) {
    return get('/exams/wrong-questions', params)
  },
  
  // 练习模式
  practiceMode(params) {
    return get('/exams/practice', params)
  },
  
  // 模拟考试
  mockExam(params) {
    return get('/exams/mock', params)
  }
}

/**
 * 题库相关接口
 */
export const questionApi = {
  // 获取题目列表
  getQuestions(params) {
    return get('/questions', params)
  },
  
  // 获取题目详情
  getQuestionDetail(id) {
    return get(`/questions/${id}`)
  },
  
  // 获取题目分类
  getQuestionCategories() {
    return get('/questions/categories')
  },
  
  // 搜索题目
  searchQuestions(params) {
    return get('/questions/search', params)
  },
  
  // 随机题目
  getRandomQuestions(params) {
    return get('/questions/random', params)
  },
  
  // 收藏题目
  favoriteQuestion(id) {
    return post(`/questions/${id}/favorite`)
  },
  
  // 取消收藏题目
  unfavoriteQuestion(id) {
    return del(`/questions/${id}/favorite`)
  },
  
  // 举报题目
  reportQuestion(id, data) {
    return post(`/questions/${id}/report`, data)
  }
}

/**
 * 文件相关接口
 */
export const fileApi = {
  // 上传文件
  uploadFile(file, type = 'image') {
    const formData = new FormData()
    formData.append('file', file)
    formData.append('type', type)
    return upload('/files/upload', formData)
  },
  
  // 批量上传文件
  uploadFiles(files, type = 'image') {
    const formData = new FormData()
    files.forEach(file => {
      formData.append('files', file)
    })
    formData.append('type', type)
    return upload('/files/batch-upload', formData)
  },
  
  // 删除文件
  deleteFile(id) {
    return del(`/files/${id}`)
  },
  
  // 获取文件信息
  getFileInfo(id) {
    return get(`/files/${id}`)
  }
}

/**
 * 消息相关接口
 */
export const messageApi = {
  // 获取消息列表
  getMessages(params) {
    return get('/messages', params)
  },
  
  // 获取消息详情
  getMessageDetail(id) {
    return get(`/messages/${id}`)
  },
  
  // 标记消息已读
  markMessageRead(id) {
    return put(`/messages/${id}/read`)
  },
  
  // 批量标记已读
  markAllRead() {
    return put('/messages/read-all')
  },
  
  // 删除消息
  deleteMessage(id) {
    return del(`/messages/${id}`)
  },
  
  // 获取未读消息数量
  getUnreadCount() {
    return get('/messages/unread-count')
  }
}

/**
 * 系统相关接口
 */
export const systemApi = {
  // 获取系统配置
  getConfig() {
    return get('/system/config')
  },
  
  // 获取版本信息
  getVersion() {
    return get('/system/version')
  },
  
  // 检查更新
  checkUpdate() {
    return get('/system/check-update')
  },
  
  // 获取公告列表
  getAnnouncements(params) {
    return get('/system/announcements', params)
  },
  
  // 获取公告详情
  getAnnouncementDetail(id) {
    return get(`/system/announcements/${id}`)
  },
  
  // 反馈建议
  submitFeedback(data) {
    return post('/system/feedback', data)
  },
  
  // 举报内容
  reportContent(data) {
    return post('/system/report', data)
  },
  
  // 获取帮助文档
  getHelpDocs(params) {
    return get('/system/help', params)
  },
  
  // 获取常见问题
  getFAQ() {
    return get('/system/faq')
  }
}

/**
 * 支付相关接口
 */
export const paymentApi = {
  // 创建订单
  createOrder(data) {
    return post('/payment/orders', data)
  },
  
  // 获取订单详情
  getOrderDetail(id) {
    return get(`/payment/orders/${id}`)
  },
  
  // 获取订单列表
  getOrders(params) {
    return get('/payment/orders', params)
  },
  
  // 取消订单
  cancelOrder(id) {
    return put(`/payment/orders/${id}/cancel`)
  },
  
  // 发起支付
  pay(data) {
    return post('/payment/pay', data)
  },
  
  // 查询支付状态
  getPaymentStatus(orderId) {
    return get(`/payment/status/${orderId}`)
  },
  
  // 获取支付方式
  getPaymentMethods() {
    return get('/payment/methods')
  },
  
  // 申请退款
  requestRefund(data) {
    return post('/payment/refund', data)
  },
  
  // 获取退款状态
  getRefundStatus(id) {
    return get(`/payment/refund/${id}`)
  }
}

// 导出所有API
export default {
  userApi,
  courseApi,
  examApi,
  questionApi,
  fileApi,
  messageApi,
  systemApi,
  paymentApi
}